package com.sskj.api.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sskj.api.domain.ProjectMember;
import com.sskj.api.vo.req.ProjectMemberPageListReq;

public interface IProjectMemberService extends IService<ProjectMember> {

    /**
     * 新增
     * @param projectMember 实例
     */
    void add(ProjectMember projectMember);

    /**
     * 删除
     * @param id 主键ID
     */
    void deleteById(Long id);

    /**
     * 删除指定项目的所有用户绑定关系
     * @param projectId 项目ID
     */
    void deleteByProjectId(Long projectId);

    /**
     * 更新
     * @param projectMember 实例
     */
    void update(ProjectMember projectMember);

    /**
     * 分页查询
     * @param req 请求实例
     * @return 分页结果
     */
    IPage<ProjectMember> pageList(ProjectMemberPageListReq req);

    /**
     * 更新管理员角色
     * @param projectId 项目ID
     * @param adminUserId 管理员用户ID
     */
    void updateAdminRole(Long projectId, Long adminUserId);

    /**
     * 用户项目总数
     * @param userId 用户ID
     * @return 总数
     */
    Long countProjects(Long userId);
}
